home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Suzy B Software 2
/
Suzy B Software CD-ROM 2 (1994).iso
/
extras
/
programm
/
gemfsc19
/
gemfsc19.lzh
/
GNUGEM27
/
AESWIN.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-24
|
6KB
|
278 lines
/*
* Aes window library interface
*
* wind_create Create a window
* wind_open Open a window in its initial size
* wind_close Close a window (not de-allocated)
* wind_delete De-Allocate a window
* wind_get Returns info about a window
* wind_set Sets various attributes of a window
* wind_find Find window under mouse.
* wind_update Advise AES about exclusive use of a window
* wind_calc Calc work area/border area of a window
* wind_new close and delete all windows
*
* ++jrb bammi@cadence.com
* modified: mj -- ntomczak@vm.ucs.ualberta.ca
*/
#include "common.h"
#ifdef __DEF_ALL__
#define L_wind_cre
#define L_wind_ope
#define L_wind_clo
#define L_wind_del
#define L_wind_get
#define L_wind_set
#define L_wind_fin
#define L_wind_upd
#define L_wind_cal
#define L_wind_new
#endif /* __DEF_ALL__ */
#ifdef L_wind_cre
/* wind_create
* Parts The window parts to be present
* NAME 0x0001 Title Bar
* CLOSE 0x0002 Close Box
* FULL 0x0004 Full Box
* MOVE 0x0008 Move Bar
* INFO 0x0010 Info line
* SIZE 0x0020 Size Box
* UPARROW 0x0040 Up arrow on vert slider
* DNARROW 0x0080 Dn arrow on vert slider
* VSLIDE 0x0100 Vert slider
* LFARROW 0x0200 Left arrow on horz slider
* RTARROW 0x0400 Right arrow on horz slider
* HSLIDE 0x0800 Horz slider
*
* Wx,Wy,Ww,Wh Max window size
*
* retrun WindowHandle Identifier of the created window <0 == error
*/
int wind_create(int Parts, int Wx, int Wy, int Ww, int Wh)
{
_int_in[0] = Parts;
_int_in[1] = Wx;
_int_in[2] = Wy;
_int_in[3] = Ww;
_int_in[4] = Wh;
return __aes__(AES_CONTROL_ENCODE(100, 5, 1, 0));
}
#endif /* L_wind_cre */
#ifdef L_wind_ope
/* wind_open
* WindowHandle The window's identifying handle
* Wx,Wy,Ww,Wh Position and size to open at
*
* returns 0 on error >0 no error
*/
int wind_open(int WindowHandle, int Wx, int Wy, int Ww, int Wh)
{
_int_in[0] = WindowHandle;
_int_in[1] = Wx;
_int_in[2] = Wy;
_int_in[3] = Ww;
_int_in[4] = Wh;
return __aes__(AES_CONTROL_ENCODE(101, 5, 1, 0));
}
#endif /* L_wind_ope */
#ifdef L_wind_clo
int wind_close(int WindowHandle)
{
_int_in[0] = WindowHandle;
return __aes__(AES_CONTROL_ENCODE(102, 1, 1, 0));
}
#endif /* L_wind_clo */
#ifdef L_wind_del
int wind_delete(int WindowHandle)
{
_int_in[0] = WindowHandle;
return __aes__(AES_CONTROL_ENCODE(103, 1, 1, 0));
}
#endif /* L_wind_del */
#ifdef L_wind_get
/*
* wind_get
* WindowHandle Window identifier
* What WF_WORKXYWH(4) coordinates of inside work area
* WF_CURRXYWH(5) curr coordinates of entire window
* WF_PREVXYWH(6) coordinates of previous window
* WF_FULLXYWH(7) coordinate of window at its max size
* WF_HSLIDE(8) position of horz slider in W1
* WF_VSLIDE(9) position of vert slider in W1
* WF_TOP(10) window handle of window on top in W1
* WF_FIRSTXYWH(11) coord. of first rect in window list
* WF_NEXTXYWH(12) coord. of next window in rect in list
* 13,14 reserved
* WF_HSLSIZE(15) size of horz slider in W1
* WF_VSLSIZE(16) size of vert slider in W1
*
* retrns 0 on error >0 no error
*/
int wind_get(int WindowHandle, int What,
int *W1, int *W2, int *W3, int *W4)
{
int retval;
_int_in[0] = WindowHandle;
_int_in[1] = What;
retval = __aes__(AES_CONTROL_ENCODE(104, 2, 5, 0));
*W1 = _int_out[1];
*W2 = _int_out[2];
*W3 = _int_out[3];
*W4 = _int_out[4];
return retval;
}
#endif /* L_wind_get */
#ifdef L_wind_set
/*
* wind_set (See wind_set_address below too)
* What Same as above except
* WF_KIND(1) Window components in W1
* WF_NAME(2) Window Title in W1 and W2
* WF_INFO(3) Window info line in W1 and W2
* WF_NEWDESK(14) Address of new desktop tree in W1 W2
* index of object in W3
*
* return 0 on error >0 no error
*/
int wind_set(int WindowHandle, int What, int W1, int W2, int W3, int W4)
{
_int_in[0] = WindowHandle;
_int_in[1] = What;
#ifdef __MSHORT__
_int_in[2] = W1;
_int_in[3] = W2;
_int_in[4] = W3;
_int_in[5] = W4;
#else
/* for 32 bit ints stuff the address into _int_in[2] and [3] */
switch(What)
{
/* NAME INFO NEWDESK */
case 2: case 3: case 14:
{ unsigned short *s = (unsigned short *)&W1;
_int_in[2] = s[0];
_int_in[3] = s[1];
if(What == 14 /* NEWDESK */)
_int_in[4] = W2;
}
break;
default:
_int_in[2] = W1;
_int_in[3] = W2;
_int_in[4] = W3;
_int_in[5] = W4;
}
#endif /* __MSHORT__ */
return __aes__(AES_CONTROL_ENCODE(105, 6, 1, 0));
}
#endif /* L_wind_set */
#ifdef L_wind_fin
/* Find window under mouse
* returns handle of window undex X,Y
*/
int wind_find(int X, int Y)
{
_int_in[0] = X;
_int_in[1] = Y;
return __aes__(AES_CONTROL_ENCODE(106, 2, 1, 0));
}
#endif /* L_wind_fin */
#ifdef L_wind_upd
/* wind_update
* Code END_UPDATE(0) end of update
* BEG_UPDATE(1) begin update of window
* END_MCTRL(2) end control of mouse functions
* BEG_MCTRL(3) begin control of mouse functions
*
* returns 0 on error >0 no error
*/
int wind_update(int Code)
{
_int_in[0] = Code;
return __aes__(AES_CONTROL_ENCODE(107, 1, 1, 0));
}
#endif /* L_wind_upd */
#ifdef L_wind_cal
/*
* wind_calc
* Type = 0 return border area
* = 1 return inner work area
* Parts As above
* InX,InY, InW, InH input value, when Type = 0 coord. of inner area
* when Type = 1 coord. of border area
* OutX,OutY,OutW, OutH calculated coordinates
*
* return 0 on error >0 o error
*/
int wind_calc(int Type, int Parts,
int InX, int InY, int InW, int InH,
int *OutX, int *OutY, int *OutW, int *OutH)
{
int retval;
_int_in[0] = Type;
_int_in[1] = Parts;
_int_in[2] = InX;
_int_in[3] = InY;
_int_in[4] = InW;
_int_in[5] = InH;
retval = __aes__(AES_CONTROL_ENCODE(108, 6, 5, 0));
*OutX = _int_out[1];
*OutY = _int_out[2];
*OutW = _int_out[3];
*OutH = _int_out[4];
return retval;
}
#endif /* L_wind_cal */
#ifdef L_wind_new
/*
* wind_new
* Close and delete all windows, reset wind_update(), flush all buffers
* restore mouse ownership to system
*
*/
void wind_new(void)
{
(void) __aes__(AES_CONTROL_ENCODE(109, 0, 0, 0));
}
#endif /* L_wind_new */
/* - eof - */